package com.coder4j.platform.config;


import com.coder4j.starter.web.util.AuthUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

/**
 * 使用 AOP 实现 Controller 日志的打印
 *
 * @author Keller
 * @date 2022-08-04 10:17:02
 */
@Aspect
@Component
@Slf4j
public class DataScopeAspect {

    /**
     * 进入Controller中的方法前，从请求中读取Token，从缓存中取出 AuthVO ，放入 ThreadLocal 中
     * @param joinPoint
     * @throws Exception
     */
    @Around("@annotation(com.coder4j.starter.web.DataScope)")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        log.info("==================DataScopeAspect");
        AuthUtils.setDataScope();
        return joinPoint.proceed();
    }
}
